
#include "shmem.h"
#include "msg_queue_peer.h"

// 消息队列结构体
struct msg_node
{
    long mtype;
    int key;        // 唯一键值
    char name[1024]; // 数据点名称
    int addr;       // 寄存器地址
    BOOL data;      // 消息队列数据
};

// 共享内存数据结构体

struct share_stm //stm32数据结构体
{
    BOOL gate;
    BOOL gs;
    BOOL LD1;
    BOOL LD3;
    BOOL FAN;
    BOOL FIRE;
    float temp;
    float humi;
    float Vbat;   
};

struct shm_data  //modbus数据结构体
{
    BOOL door;     //门
    float tem;     // 温度
    float weight;  // 重量
    float in_pre;  // 内部压强
    float air_pre; // 大气压强
    float in_h2;   // 内部氢气浓度
    float out_h2;  // 外部氢气浓度
};
struct shm_data shm_data; // 共享内存结构体

struct share
{
    int id;
    struct shm_data shm_data;
    struct share_stm stm;
};
struct share *share_data;
// 共享内存结构体

int main(int argc, char const *argv[])
{
    
    struct shm_param para;
    shm_init(&para, "shm", 1024);                    // 共享内存初始化
    share_data = (struct share *)shm_getaddr(&para); // 获取共享内存地址
    printf("%p\n",share_data);
    share_data->stm.temp=0;
    share_data->stm.Vbat=5;
    while (1)
    {
    share_data->stm.temp++;
    share_data->stm.Vbat++;
    printf("共享内存数据：温度:%.2f,压强:%.2f\n",share_data->shm_data.tem , share_data->shm_data.weight);
    printf(" stm32共享内存数据:温度:%.2f,压强:%.2f\n",share_data->stm.temp , share_data->stm.Vbat);
    sleep(1);
    }
    
   
   
    // struct msg_node m = {999,306, "伤心小狗",0,1};
    // for (int i = 0; i < 3; i++)
    // {
    //     // 添加消息
    //     msg_queue_send("msg", &m, sizeof(m), 0);
    //     sleep(1);
    // }

    return 0;
}
